package com.owenobyrne.btce;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.owenobyrne.btce.api.model.BTCEInfo;
import com.owenobyrne.btce.api.model.BterInfo;
import com.owenobyrne.btce.api.model.Depth;

public class TestBtce {
	static final Logger logger = Logger.getLogger(TestBtce.class.getName());
	static ApplicationContext context;
	static BTCE btce;
	static Map<String, BterInfo> bterMap = new HashMap<String, BterInfo>();
	
	static Map<String,Integer> flag=new HashMap<String, Integer>();
	static {

		context = new ClassPathXmlApplicationContext("beans.xml");
		btce = (BTCE) context.getBean("BTCE");

	}


	public static void main(String[] args) {
//		System.setProperty("javax.net.ssl.trustStore",
//				"D:\\work\\btc-e-api-master\\jssecacerts");
		// System.setProperty("javax.net.ssl.trustStore",
		// "D:\\work\\btc\\jssecacerts1");
		try {
			// logger.info("Spent: " + btce.getTradeResult("ask",
			// "34d2b6a5-5683-44e5-94fd-e67bddb69279").getData().getTotal_spent().getValue());

			// Info i = btce.getInfo();
//			while (true) {
//				BterInfo lcInfo = btce.getBterInfo("ltc_cny");
//				
//				TestAPI.getExchangeValue(btce);
//				Thread.sleep(500);
//			}
//			btce.postOrder("ltc_cny", "SELL", 212.4, 8);

			int tid=DatabaseObject.maxTradeId("trade");

			while(true){
				List<Map<String, Object>> tradeList=null;
				try {
					tradeList = btce.getTradeList("ltc_cny", tid);
					for(Map<String, Object> map:tradeList ){
						
						int date = Integer.valueOf(""+map.get("date"));
						double price =Double.valueOf(""+map.get("price"));
						double amount =Double.valueOf(""+map.get("amount"));
						tid =Integer.valueOf(""+map.get("tid"));
						String type =""+map.get("type");
						DatabaseObject.insertRecord(date, price, amount, tid, type,"trade");					
					}
					System.out.print(tid+"-----------"+new Date());
				} catch (Exception e) {
					e.printStackTrace();
				}finally{
					
					if(tradeList==null||tradeList.size()<20 ){
						Thread.sleep(30*1000);
					}
					
				}
				if(DatabaseObject.countTrade()>100000){
					//truncate it
					DatabaseObject.update("truncate trade");
					DatabaseObject.update("truncate log");
				}
				
				
			}

			
//			System.out.println(btce.getDateStr(			1386315171l));
			
//			while(true){
//				try {
//					btce.execute();	
//				} catch (Exception e) {
//					for(int i=0 ;i<5;i++){
//						try {
//							btce.execute();		
//							
//						} catch (Exception e2) {
//							// TODO: handle exception
//						}
//						Thread.sleep(100);
//					}
//	
//					// TODO: handle exception
//					e.printStackTrace();
//					
//				}
//				Thread.sleep(10*1000);
//				
//			}
			// Map<String, Object> postOrder = btce.postOrder("ltc_cny", "SELL",
			// 220, 1);
			// Thread.sleep(60*1000);
			// int orderId=Integer.parseInt(""+postOrder.get("order_id"));
			// Map<String, Object> postCancelOrder =
			// btce.postCancelOrder(orderId);

			// Quote bidq = mg.getQuote("bid");
			// Quote askq = mg.getQuote("ask");

			// logger.info("MtGox portfolio value = " +
			// i.getData().getWallets().get("BTC").getBalance().getValue_int().multiply(askq.getData().getAmount())
			// );

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	
}
